package ae.pcfc.cldos.online.common.manager;

import ae.pcfc.cldos.online.common.exception.EmployeeAllreadyExistException;
import ae.pcfc.cldos.online.common.exception.EmployeeQuotaException;
import ae.pcfc.cldos.online.common.exception.GSAppException;
import ae.pcfc.cldos.online.common.exception.LeaseExpireException;
import ae.pcfc.cldos.online.common.exception.LicenseErrorRemarkException;
import ae.pcfc.cldos.online.common.exception.LicenseExpiredException;
import ae.pcfc.cldos.online.common.exception.RequestAllreadyExistException;
import ae.pcfc.cldos.online.common.exception.VisitorAllreadyExistException;

/**
 * 
 * @author arosa
 *
 */
public interface BuisnessValidationManager {

	public void validateEmployee(String passportName, String passportNo, boolean isVisitVisa) 
			throws RequestAllreadyExistException, EmployeeAllreadyExistException, GSAppException, VisitorAllreadyExistException;
	
	public void validateEmployee(String gsEmployeeId) throws RequestAllreadyExistException;
	
	public void validateCompany(String coLicNo) throws LeaseExpireException, LicenseExpiredException,LicenseErrorRemarkException;
	
	public void validateEmployeeQuota(String coLicNo, Long clientId) throws EmployeeQuotaException;
	
	public void validateOnlineEmpVisaData(String companyLicenseNo, String passportNameEn, String passportNo) throws Exception;
	
	/**
	 * @param companyLicenseNo
	 * @throws Exception
	 */
	public void validateOnlineVisitVisaData(String companyLicenseNo) throws Exception;
	
	/**
	 * @param companyLicenseNo
	 * @param empId
	 * @throws Exception
	 */
	public void validateOnlineEmpVisaRenewalData(String companyLicenseNo, String empId) throws Exception;
	/**
	 * @param companyLicenseNo
	 * @throws Exception
	 */
	public void validateOnlineEmpVisaTerminationData(String companyLicenseNo) throws Exception;
	/**
	 * @param companyLicenseNo
	 * @return
	 * @throws Exception
	 */
	public void validateOnlineNOCLettersData(String companyLicenseNo) throws Exception;
	/**
	 * @param nocType
	 * @param textFormat
	 * @return
	 */
	public String getNOCLetterCode(String nocType, String textFormat);
}
